// july 7 作业

function getNumber(n) {
    // TODO 斐波那契数列
    if (n === 1) {
        return 1;
    } else if (n === 2) {
        return 1;
    } else {
        return getNumber(n - 2) + getNumber(n - 1);
    }
}

function MyPI() {
    // TODO  求圆周率到3.1415926-3.1415927之间需要的是运算步骤
    let cnt;
    let pi = 0;
    let piMin = 3.1415926;
    let piMax = 3.1415927;
    let sum = 0;
    for (cnt = 1; pi < piMin || pi > piMax; cnt++) {
        if (cnt % 2 === 0) {
            sum = -4.0 / (2 * cnt - 1);
        } else {
            sum = 4.0 / (2 * cnt - 1);
        }
        pi += sum;
    }
    console.log("计算了 " + (cnt - 1) + "次");
}

function getDays(year, month) {
    // TODO 获取year年month月距离今天有多少天
    let now = new Date();
    // 获取当前的时间
    let yesterday = new Date(year, month - 1);
    if (now.getTime() > yesterday.getTime()) {
        // 今天的毫秒值大于 昨天的毫秒值，昨天已经过去了
        let day = (now.getTime() - yesterday.getTime()) / (86400000);
        alert("昨天已经过去了 " + day.toString() + " 天")
    } else {
        // now < yesterday 距离未来还有多少天
        let day = (yesterday.getTime - now.getTime) / (86400000);
        alert("距离未来还有 " + day.toString() + "天");
    }

}


function printArr(array) {
    // TODO 写一个方法 printArr(arr) 打印参数数组
    let clone = array.slice();
    // 拷贝一份用来排序
    clone.sort();
    clone.reverse();
    let max = clone[0];
    // 最大值 得到 5

    document.write("<table border=\"1px\" />");
    for (let j = 1; j <= max; j++) {
        document.write("<tr></tr>")
        for (let i = 0; i < array.length; i++) {
            let element = array[i];
            if (j <= max - element) {
                document.write("<td> </td>")
            } else {
                document.write("<td>*</td>")
            }
        }
        document.write("<tr></tr>")
    }
    document.write("</table>");

}

function getMax(str) {
    // TODO 写一个方法getMax(str) 获取参数字符串中所有数字字符组成的最大整数：如"12abc32"---3221
    let myArray = [];
    // 定义数组放元素
    for (let i = 0; i < str.length; i++) {
        if (str[i] >= '0' && str[i] <= '9') {
            // 数字放数组中
            myArray.push(str[i]);
        }
    }
    return myArray.sort().reverse().join("");
}

function printTime(str) {
    // TODO  获取参数字符串中每个字符出现的次数
    let set = new Set();
    // 创建 set，放置不重复的字符
    for (let i = 0; i < str.length; i++) {
        set.add(str[i]);
        // 放入 Set
    }
    for (const Element of set) {
        let cnt = 0;
        for (let i = 0; i < str.length; i++) {
            if (Element === str[i]) {
                // 等于 次数++
                cnt++;
            }
        }
        document.write("<p>" + Element + "出现的次数是" + cnt + "</p>");
    }
}


function digitalBlackHole(num) {
    // TODO 数字黑洞
    // 把一个四位数的四个数字由小至大排列，组成一个新数，又由大至小排列排列组成一个新数，
    // 这两个数相减，之后重复这个步骤，只要四位数的四个数字不重复，数字最终便会变成 6174。
    while (true) {
        let max = MyGetMax(num);
        let min = MyGetMin(num);
        num = max - min;
        let message = `<p>${max}-${min}=${num}</p>`;
        if (num === 0) {
            console.log(message);
            document.write(message);
            break;
        }
        if (num === 6174) {
            console.log(message);
            document.write(message);

            break;
        }
        console.log(message);
        document.write(message);

    }
}


function MyGetMax(num) {
    // TODO 获大最大数
    return parseInt(getMax(num.toString()));
}

function MyGetMin(num) {
    // TODO 获取最小值
    let str = getMax(num.toString());
    let toStr = "";
    for (let i = str.length - 1; i >= 0; i--) {
        toStr += str[i];
    }
    return parseInt(toStr);
}
